Numerous applications exist today that will synchronize data between two endpoints utilizing one of two general models, namely replication of a data repository from one location to another or transfer of data between a host store and a client store. Classic examples of the first case involve database replication across a database cluster or between a web-based host and a client-based application. A key to this model is that data is transferring within a well-defined pattern among participants that are typically under complete control of a data management system from a software development point of view. The second case, referred to in this context as cross-store synchronization, is much more fragile because it typically involves transferring data between endpoints that do not have the same level of support for items in the data set. A classic example is synchronizing between a desktop computer and a portable device such as a mobile phone or portable media player.
To cope with challenges of cross-store synchronization a conventional solution is to create an application stack on top of a custom protocol that connects host and client devices. A synchronization stack vendor also typically writes one or more synch providers for both the host and client device to enable this conduit to carry data from applications, such as an email program. Once these providers have been installed on both a desktop computer and a portable device, for instance, synchronization through the conduit is possible. Of course, the reach of these solutions is limited to the amount of work that a stack vender is willing to perform. For example, if a stack vendor does not provide support for a particular data source on a host, it is not possible to synchronize content from that source to a client.
Sometimes a stack vendor will make the system available to third parties to allow them to also create providers that work at both ends of the pipe and thereby encourage a broader synchronization ecosystem. Nevertheless, because all aspects of the conduit are written by a stack vender, solutions are locked into a particular vendor and are limited by where the vendor makes the stack available.
In the end, most vendors that desire to ship solutions to synchronize their application with any portable device, or portable device manufactures that wish to support synchronization of applications, purchase a third party solution, develop their own, or simply decide against offering such functionality.